table of contents
chmod(2) | 2007-10-27-16:31 | chmod(2) |
НАЗВА ¶
chmod, fchmod - змінює права доступу до файлу
СКЛАДОВІ ¶
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char * path , mode_t
mode );
int fchmod(int fildes , mode_t mode
);
ОПИС ¶
Змінює права доступу до файлу поданому в path або вказаному в fildes . Права визначаються за допомогою логічних операцій і/або виходячи з наступного:
S_ISUID¶
04000 встановити ID користувача при виконанні
S_ISGID¶
02000 встановити ID групи при виконанні
S_ISVTX¶
01000 sticky bit
S_IRUSR (S_IREAD)¶
00400 читання здійснює власник
S_IWUSR (S_IWRITE)¶
00200 запис здійснює власник
S_IXUSR (S_IEXEC)¶
00100 виконання/пошук здійснює власник
S_IRGRP¶
00040 читання здійснює група
S_IWGRP¶
00020 запис здійснює група
S_IXGRP¶
00010 виконання/пошук здійснює група
S_IROTH¶
00004 читання здійснюють інші
S_IWOTH¶
00002 запис здійснюють інші
S_IXOTH¶
00001 виконання/пошук здійснюють інші
Ефективний UID процесу мусить бути нуль, або відповідати власнику файлу. Якщо ефективний UID процесу не нуль і зазначена для файлу група не відповідає ефективному ID-групи процесу, або якимсь допоміжним ID-груп , то біт S_ISGID буде переставлено в положення виключено , тому процес буде завершений і повернута помилка. В залежності від файлової системи, при записі файлу, біт виконання в установках для ID-користувача та ID-групи може бути переключений в положення виключено. В деяких файлових системах лише привілейований користувач може встановити sticky bit, який має спеціальне значення. Про sticky-біт, про біти установок ID-користувача та ID-групи, для директорій, див. stat (2). В NFS файлових системах, обмеження прав доступу, зразу ж, вплине на вже відкриті файли, тому що контроль доступу проводиться на сервері, а відкриті файли обслуговуються клієнтом. Розширення прав доступу може затримувати інших клієнтів, які дозволяють кешування атрибутів.
ПОВЕРНЕНЕ ЗНАЧЕННЯ ¶
При вдалому завершенні повертає нуль. При помилковому повертає -1 , та відповідно виставляє errno .
ПОМИЛКИ ¶
В залежності від файлової системи, можуть бути повернені різні помилки. Більшість загальних помилок для chmod є подано нижче:
EPERM¶
Ефективний UID не відповідає власникові файлу, і не нуль.
EROFS¶
Поданий файл знаходиться на файловій системі з якої можна тільки читати.
EFAULT¶
path (шлях) вказує поза межі доступного вам адресного простору.
ENAMETOOLONG¶
path (шлях) дуже довгий.
ENOENT¶
Файл не існує.
ENOMEM¶
Ядру не достатньо доступної пам'яті.
ENOTDIR¶
Складова шляху path не є директорією.
EACCES¶
Не достатньо прав для пошуку в складових шляху path.
ELOOP¶
Дуже багато символічних посилань, що замикають в коло шлях path .
EIO¶
Сталася помилка вводу/виводу.
Загальні помилки для fchmod подано нижче:
EBADF¶
Дескриптор файлу fildes не вірний.
EROFS¶
Дивись вище.
EPERM¶
Дивись вище.
EIO¶
Дивись вище.
ВІДПОВІДНІСТЬ ¶
Виклик chmod сумісний з SVr4, SVID, POSIX, X/OPEN, 4.4BSD. В SVr4 документовано повернення значень EINTR, ENOLINK і EMULTIHOP, але не має ENOMEM. POSIX.1 не документовано коди помилок EFAULT, ENOMEM і ELOOP, а також макроси S_IREAD, S_IWRITE і S_IEXEC. Виклик fchmod сумісний з 4.4BSD і SVr4. В SVr4 додатково документовано коди помилок EINTR і ENOLINK. POSIX вимагає функцію fchmod якщо в списку оголошено або _POSIX_MAPPED_FILES або _POSIX_SHARED_MEMORY_OBJECTS , і додатково документовано коди помилок ENOSYS і EINVAL , але не документовано EIO.
В POSIXД і X/OPEN не документовано біт sticky.
ДИВИСЬ ТАКОЖ ¶
2007-10-27-16:31 | © 2005-2007 DLOU, GNU FDL |